package com.datasecops.scannerservices.configurationfiles;

import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;

/**水印的相关配置
 * @author: GeXiaoLong
 * @time: 2023/1/6 10:35
 */
@Service
@Slf4j
public class WatermarkingConfiguration {
    private String HOST = "";
    private String PORT = "";
    private String USER = "";
    private String PASSWORD = "";
    private String DBNAME = "";
    private String EMBEDTABLENAME = "";
    private String host = "host=10.26.18.58";
    private String port = "port=3306";
    private String user = "user=root";
    private String password = "password=Wzx.1104";
    private String dbName = "DbName=";//连接的数据库
    //嵌入水印的相关参数命令
    private String embedTableName = "EmbedTableName=";//表示要操作的数据库表的名字
    private String embedWmFileName = "EmbedWmFileName=/root/wm_embed_";//水印信息保存的文件的名字
    private String embedAuxInfoFileName = "EmbedAuxInfoFileName=/root/wm_embed_aux_";//保存的水印辅助信息的文件名字
    //提取水印操作时相关的命令
    private String extractTableName = "ExtractTableName=";////表示要操作的数据库表的名字
    private String extractWmFileNameName = "ExtractWmFileNameName=/root/wm_extract_";//水印信息保存的文件的名字
    private String extractAuxInfoFileName = "ExtractAuxInfoFileName=/root/wm_extract_aux_";//保存的水印辅助信息的文件名字
    //嵌入水印后一些文件
    private String runOutFileName = "RunOutFileName=/root/DbwmRun_";
    private String tableDesFileName = "TableDesFileName=/root/TableDes_";
    //指明水印的类型，三种取值
    private String wmType = "WmType=";//后面添加数值WmFakeRow是伪行水印,WmDigitalAsb是数值修改水印,WmDigitalHsw是直方图水印，还没有开发
    //指明操作的类型
    private String operType = "OperType=";//OtEmbed指嵌入水印操作，OtExtract指提取水印操作，OtExRestore指提取水印并恢复数据库操作，OtAttack指对水印算法的攻击(直接修改数据库)
    //指明要嵌入的水印信息
    private String traceWmEmbedChars = "TraceWmEmbedChars=";//用户指定

    private String characterSet = "CharacterSet=utf8mb4";//数据库只用的字符集
    private String dbLoaded = "DbLoaded=yes";//数据库的导出方式
    private String reUseTableInfo = "ReUseTableInfo=yes";//是否可以重复使用表信息
    private String splitChars = "SplitChars=,";//数据库文件的列分割符
    private String splitLineChars = "SplitLineChars=\\n";//导入和导出数据库时的行分割符
    private String enclosedChars = "EnclosedChars=\"";//导入和导出数据库时的字段的两侧的符号
    private String mysqlClientSo = "MysqlClientSo=/usr/lib64/mysql/libmysqlclient.so.20";//指明使用的libmysqlclient的动态库
    private String fakeRowEmbedProp = "FakeRowEmbedProp=0.01";//加入伪行的比例
    private String distortThreshold = "DistortThreshold=0.50";//数值域修改水印可以忍受的失真程度


    public String getHOST() {
        return HOST;
    }

    public void setHOST(String HOST) {
        this.HOST = HOST;
    }

    public String getPORT() {
        return PORT;
    }

    public void setPORT(String PORT) {
        this.PORT = PORT;
    }

    public String getUSER() {
        return USER;
    }

    public void setUSER(String USER) {
        this.USER = USER;
    }

    public String getPASSWORD() {
        return PASSWORD;
    }

    public void setPASSWORD(String PASSWORD) {
        this.PASSWORD = PASSWORD;
    }

    public String getDBNAME() {
        return DBNAME;
    }

    public void setDBNAME(String DBNAME) {
        this.DBNAME = DBNAME;
    }

    public String getEMBEDTABLENAME() {
        return EMBEDTABLENAME;
    }

    public void setEMBEDTABLENAME(String EMBEDTABLENAME) {
        this.EMBEDTABLENAME = EMBEDTABLENAME;
    }

    public String getHost() {
        return host;
    }

    public void setHost(String host) {
        this.host = host;
    }

    public String getPort() {
        return port;
    }

    public void setPort(String port) {
        this.port = port;
    }

    public String getUser() {
        return user;
    }

    public void setUser(String user) {
        this.user = user;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getDbName() {
        return dbName;
    }

    public void setDbName(String dbName) {
        this.dbName = dbName;
    }

    public String getEmbedTableName() {
        return embedTableName;
    }

    public void setEmbedTableName(String embedTableName) {
        this.embedTableName = embedTableName;
    }

    public String getEmbedWmFileName() {
        return embedWmFileName;
    }

    public void setEmbedWmFileName(String embedWmFileName) {
        this.embedWmFileName = embedWmFileName;
    }

    public String getEmbedAuxInfoFileName() {
        return embedAuxInfoFileName;
    }

    public void setEmbedAuxInfoFileName(String embedAuxInfoFileName) {
        this.embedAuxInfoFileName = embedAuxInfoFileName;
    }

    public String getExtractTableName() {
        return extractTableName;
    }

    public void setExtractTableName(String extractTableName) {
        this.extractTableName = extractTableName;
    }

    public String getExtractWmFileNameName() {
        return extractWmFileNameName;
    }

    public void setExtractWmFileNameName(String extractWmFileNameName) {
        this.extractWmFileNameName = extractWmFileNameName;
    }

    public String getExtractAuxInfoFileName() {
        return extractAuxInfoFileName;
    }

    public void setExtractAuxInfoFileName(String extractAuxInfoFileName) {
        this.extractAuxInfoFileName = extractAuxInfoFileName;
    }

    public String getRunOutFileName() {
        return runOutFileName;
    }

    public void setRunOutFileName(String runOutFileName) {
        this.runOutFileName = runOutFileName;
    }

    public String getTableDesFileName() {
        return tableDesFileName;
    }

    public void setTableDesFileName(String tableDesFileName) {
        this.tableDesFileName = tableDesFileName;
    }

    public String getWmType() {
        return wmType;
    }

    public void setWmType(String wmType) {
        this.wmType = wmType;
    }

    public String getOperType() {
        return operType;
    }

    public void setOperType(String operType) {
        this.operType = operType;
    }

    public String getTraceWmEmbedChars() {
        return traceWmEmbedChars;
    }

    public void setTraceWmEmbedChars(String traceWmEmbedChars) {
        this.traceWmEmbedChars = traceWmEmbedChars;
    }

    public String getCharacterSet() {
        return characterSet;
    }

    public void setCharacterSet(String characterSet) {
        this.characterSet = characterSet;
    }

    public String getDbLoaded() {
        return dbLoaded;
    }

    public void setDbLoaded(String dbLoaded) {
        this.dbLoaded = dbLoaded;
    }

    public String getReUseTableInfo() {
        return reUseTableInfo;
    }

    public void setReUseTableInfo(String reUseTableInfo) {
        this.reUseTableInfo = reUseTableInfo;
    }

    public String getSplitChars() {
        return splitChars;
    }

    public void setSplitChars(String splitChars) {
        this.splitChars = splitChars;
    }

    public String getSplitLineChars() {
        return splitLineChars;
    }

    public void setSplitLineChars(String splitLineChars) {
        this.splitLineChars = splitLineChars;
    }

    public String getEnclosedChars() {
        return enclosedChars;
    }

    public void setEnclosedChars(String enclosedChars) {
        this.enclosedChars = enclosedChars;
    }

    public String getMysqlClientSo() {
        return mysqlClientSo;
    }

    public void setMysqlClientSo(String mysqlClientSo) {
        this.mysqlClientSo = mysqlClientSo;
    }

    public String getFakeRowEmbedProp() {
        return fakeRowEmbedProp;
    }

    public void setFakeRowEmbedProp(String fakeRowEmbedProp) {
        this.fakeRowEmbedProp = fakeRowEmbedProp;
    }

    public String getDistortThreshold() {
        return distortThreshold;
    }

    public void setDistortThreshold(String distortThreshold) {
        this.distortThreshold = distortThreshold;
    }
}
